﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VentaPorCatalogos.UserControls;
using BE.SearchCriteria;
using BE;
using BLL;
using System.Text;

namespace VentaPorCatalogos.Pages
{
    public partial class BarriosSearch : VentaPorCatalogos.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["SearchCriteria"] = null;
                pagGrilla.CompPaginador(Selector.Primera);
                InicializarGrilla();
                //cargar provincia
                CargarProvincia();

                // iniciar combo
                IniciarCombo();

                if (!string.IsNullOrEmpty(Request.QueryString["Filtro"]))
                {
                    txtDescripcionFiltro.Text = Request["Filtro"];
                    btnFiltrar_Click(null, null);
                }

            }
        }

        private void IniciarCombo()
        {
            try
            {
                ddlLocalidad.Items.Add(new ListItem("Seleccione", "0"));
            }
            catch (Exception)
            {

                throw;
            }
        }

        private void InicializarGrilla()
        {
            gdvSearch.DataSource = new List<BarrioBE>();
            gdvSearch.DataBind();            
        }

        protected void btnFiltrar_Click(object sender, EventArgs e)
        {
            BarrioSC wBarrioSC = new BarrioSC();

            Int32 wIdBarrio;
            if (Int32.TryParse(txtIdFiltro.Text, out wIdBarrio))
                wBarrioSC.IdBarrio = wIdBarrio;
            wBarrioSC.Descripcion = txtDescripcionFiltro.Text;
            
            if (ddlLocalidad.SelectedValue.Trim() != "")
                wBarrioSC.IdLocalidad = Convert.ToInt32(ddlLocalidad.SelectedValue);
            if (ddlProvincia.SelectedValue.Trim() != "")
                wBarrioSC.IdProvincia = Convert.ToInt32(ddlProvincia.SelectedValue);

            Session["SearchCriteria"] = wBarrioSC;

            CargarGrilla(Selector.Actual, "ASC");
        }

        protected void btnAceptar_Click(object sender, EventArgs e)
        {
            ClientScript.RegisterStartupScript(typeof(Page), "closePage", string.Format("Seleccionar({0});", 0), true);
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            ClientScript.RegisterStartupScript(typeof(Page), "closePage", string.Format("Seleccionar({0});", 0), true);
        }

        protected void gdvSearch_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int index = Convert.ToInt32(e.CommandArgument);
            int id = Convert.ToInt32(gdvSearch.DataKeys[index].Value);

            StringBuilder sbScript = new StringBuilder();
            sbScript.AppendLine(@"$(function () {");
            sbScript.AppendLine(string.Format("Seleccionar({0}, \"{1}\");", id, gdvSearch.Rows[index].Cells[1].Text));
            sbScript.AppendLine(@"});");

            ScriptManager.RegisterStartupScript(this, this.GetType(), "closePage", sbScript.ToString(), true);
            //ClientScript.RegisterStartupScript(typeof(Page), "closePage", sbScript.ToString(), true);
        }
        protected void pagGrilla_OnComandoPagina(object sender, PaginadorEventArgs e)
        {
            CargarGrilla(e.Comando, "ASC");
        }

        protected override void Render(HtmlTextWriter writer)
        {
            foreach (GridViewRow r in gdvSearch.Rows)
            {
                if (r.RowType == DataControlRowType.DataRow)
                {
                    r.ToolTip = "Haga click para seleccionar";
                    r.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this.gdvSearch, "Select$" + r.RowIndex, true);

                }
            }

            base.Render(writer);
        }

        protected void CargarGrilla(Selector pnSelector, string pszOrden)
        {
            BaseSC wSearchCriteria;
            wSearchCriteria = (BaseSC)Session["SearchCriteria"];

            try
            {
                int wCountReg = 0;
                pagGrilla.CompPaginador(pnSelector);
                List<BarrioBE> oListBarrioBE = BarrioBLL.SeleccionarTodos(wSearchCriteria, cPageSize, pagGrilla.Pagina, ref wCountReg);
                gdvSearch.DataSource = oListBarrioBE;
                gdvSearch.DataBind();
                pagGrilla.PaginadorMethod(wCountReg, pnSelector, cPageSize);

            }
            finally
            {
                ;
            }


        }

        #region "DropDownList"
        protected void ddlProvincia_SelectedIndexChanged(object sender, EventArgs e)
        {
            LocalidadBE oLocalidadBE = new LocalidadBE();
            ProvinciaBE oProvinciaBE = new ProvinciaBE();
            try
            {
                oProvinciaBE.IdProvincia = Convert.ToInt32(ddlProvincia.SelectedValue);
                oLocalidadBE.pProvinciaBE = oProvinciaBE;
                CargarLocalidades(oLocalidadBE);
            }
            catch (Exception)
            {

                throw;
            }

        }
        #endregion

        private void CargarProvincia()
        {
            try
            {
                int wCountReg = 0;
                List<ProvinciaBE> ListProvinciaBE = new List<ProvinciaBE>();
                ListProvinciaBE = ProvinciaBLL.SeleccionarTodos(null, null, ref wCountReg);
                ddlProvincia.DataSource = ListProvinciaBE;
                ddlProvincia.DataTextField = "Descripcion";
                ddlProvincia.DataValueField = "IdProvincia";
                ddlProvincia.DataBind();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

        private void CargarLocalidades(LocalidadBE pLocalidadBE)
        {
            try
            {
                int wCountReg = 0;
                List<LocalidadBE> ListLocalidadBE = new List<LocalidadBE>();
                ListLocalidadBE = LocalidadBLL.SeleccionarTodos(pLocalidadBE, null, null, ref wCountReg);
                ddlLocalidad.DataSource = ListLocalidadBE;
                ddlLocalidad.DataTextField = "Descripcion";
                ddlLocalidad.DataValueField = "IdLocalidad";
                ddlLocalidad.DataBind();
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

    }
}